﻿# Описание
Приложение предоставляет оконный интерфейс для ввода интервала IP-адресов, 
выполнения поиска камер в локальной сети и отображения результатов поиска в оконном интерфейсе.
Примечание: не применялось на реальном примере

# Описание работы программы
1.	В программе заданется интервал IP-адресов.
2.	Проверяются на доступность (Ping) IP-адреса из заданного интервала.
3.  Недоступные IP-адреса отображаются в окне вывода программы
4.	Для доступных IP-адресов отправляется проверочный HTTP-запросов и анализируется ответ на них. 
Строка запроса выглядит следующим образом: 
http://<ip>[:<port>]/cgi-bin/admin/privacy.cgi
5.	Приложение отображает сообщение (MessageBox) с результатом выполнения проверочного запроса, 
Если проверка завершилась успешно, то выводиться «проверка выполнена успешно»,
если во время проверки произошли какие то ошибки, то выводиться «проверка не выполнена».

# Инструкция по применению
![image](https://github.com/Mark65537/CameraCheckLocIP/blob/master/screens/mainform.png)
1. Показывает общее время работы программы
2. Панель вывода. В текущий момент используется только для вывода недоступных IP адрессов
3. Список в котором выводятся доступные IP адресса(если есть), с их доступными портами и статус проверки HTTP-запросом
4. Время задержки для Ping в милисекундах(в среднем Ping требуется где то 60мс, поэтому по умолчанию выставленно 100мс)
5. Список портов которые будут проверятся, если список пустой тогда порты не будут учитываться
6. Кнопка для удаления выбранного порта из списка
7. Кнопка для добавления порта. При нажатие на кнопку выводиться окно, в которое нужно ввести порт, который вам нужен<br>
![image](https://github.com/Mark65537/CameraCheckLocIP/blob/master/screens/addport.png)
8. IP адресс конца проверки
9. IP адресс начала проверки
10. Кнопка при нажатие на которую начинается проверка

Если проверка прошла без всяких ошибок, то выводиться окно:<br>
![image](https://github.com/Mark65537/CameraCheckLocIP/blob/master/screens/checkOK.png) 

Если же во время проверки произошла какая то ошибка, то выводиться окно, где будет написанно краткое описание ошибки:<br>
![image](https://github.com/Mark65537/CameraCheckLocIP/blob/master/screens/checkFail.png) 

# Описание классов программы
Классы разделенны по задачам. Каждый класс отвечает за свою задачу
Идея в том что бы у каждого была своя ответственность
Классы IPEnumeration, PingChecking, HTTPChecking. Помещены в отдельную папку, так как предполагается что эти классы могут быть использованны в других проектах 
 
IPEnumeration-Описанны методы перебора IP по заданному диапазону<br>
PingChecking-Описанны методы для Пинга определенных IP адресов<br>
HTTPChecking-Отправка запроса на определенные IP адреса<br>

Checker-промежуточный класс, предназначенный для отделения методов логики, от описания окна

CheckingResult-класс который описывает нужные возвращаемые данные после выполнения запроса

